package cn.schoolwow.quickflow.service.quickFlow.putData;

import cn.schoolwow.quickflow.QuickFlow;
import cn.schoolwow.quickflow.domain.FlowDataFeature;

import java.util.Map;

public interface QuickFlowPutDataOperation {
    /**
     * 设置全局线程上下文参数
     */
    QuickFlow putContextThreadLocalData(String key, Object value, FlowDataFeature... flowDataFeatures);

    /**
     * 设置全局线程上下文实例参数
     */
    QuickFlow putContextThreadLocalInstanceData(Object instance, FlowDataFeature... flowDataFeatures);

    /**
     * 设置全局线程上下文实例参数
     */
    QuickFlow putContextThreadLocalInstanceData(Object instance, Class clazz, FlowDataFeature... flowDataFeatures);

    /**
     * 设置全局线程上下文实例参数
     */
    QuickFlow putContextThreadLocalDataMap(Map<String,Object> dataMap, FlowDataFeature... flowDataFeatures);

    /**
     * 设置全局上下文临时参数
     */
    QuickFlow putContextTemporaryData(String key, Object value);

    /**
     * 设置全局线程上下文实例临时参数
     */
    QuickFlow putContextTemporaryInstanceData(Object instance);

    /**
     * 设置全局线程上下文实例临时参数
     */
    QuickFlow putContextTemporaryInstanceData(Object instance, Class clazz);

    /**
     * 设置全局上下文临时参数
     */
    QuickFlow putContextTemporaryDataMap(Map<String,Object> dataMap);

    /**
     * 设置全局上下文临时参数
     */
    QuickFlow putContextData(String key, Object value, FlowDataFeature... flowDataFeatures);

    /**
     * 设置全局线程上下文实例临时参数
     */
    QuickFlow putContextInstanceData(Object instance, FlowDataFeature... flowDataFeatures);

    /**
     * 设置全局线程上下文实例临时参数
     */
    QuickFlow putContextInstanceData(Object instance, Class clazz, FlowDataFeature... flowDataFeatures);

}
